\begin{frame}
	\frametitle{Protocolo 9P}
	\framesubtitle{Generalidades}
	\begin{itemize}
			\item Es un protocolo estandar para acceder a recursos.\pause
			\item Todos los recursos se acceden como archivos en una jerarquía.\pause
			\item Está estructurado como un conjunto de transacciones
			 que envian el pedido del cliente al servidor
			 y devuelve el resultado.\pause
			\item Controla el sistema de archivos (no solo los archivos)
			Incluye los procedimientos para resolver nombres de archivos y 
			atravesar la jerarquía de nombres provista por el FS del servidor. \pause
			\item El name-space del cliente es manejado por este unicamente.\pause
			\item El acceso es a nivel de bytes y no de bloques.\pause
			\item Puede ser extendido a otros recursos.\pause
		\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Protocolo 9P}
	\framesubtitle{Ejemplos}
	\begin{itemize}
			\item El servidor de archivos exporta la jerarquía de estos usando 9P.\pause
			\item No hay comando ftp. Sin embargo hay un servicio \textit{ftpfs} que mapea
				el protocolo ftp a 9P.\pause
			\item \textit{exportfs} es un servicio que toma parte de su name-space y 
				lo deja disponible para otros usuarios.\pause
			\item \textit{import} hace un RPC a una máquina remota en la que ejecuta \textit{exportfs}
				y luego mapea el recurso en el name-space local.\pause
		\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Protocolo 9P}
	\framesubtitle{}
	\begin{itemize}
			\item El uso universal de 9P es lo que conecta los distintos 
			componentes de Plan 9 para conformar un sistema distribuido.\pause
			\item En vez de implementar protocolos individuales, como rlogin, FTP, y X windows,
			Plan9 implementa estos servicios mediante operaciones sobre archivos.\pause
			\item Y luego utiliza un único ( y bien documentado ) protocolo para intercambiar la información.\pause
			\item 9P es \textit{stateful}. \pause
			\item Los clientes guardan \textit{fids} que son punteros a los objetos del servidor.\pause
			\item Todas las operaciónes usan estos \textit{fids}.
		\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Protocolo 9P}
	\framesubtitle{Mensajes}
	\begin{itemize}
			\item El protocolo define 17 mensajes, con los cuales permite: \pause
			\begin{itemize}
			\item Autenticar usuarios (\textit{session} y \textit{attach}) \pause
			\item Navegar fids (\textit{walk}) \pause
			\item Copiarlos (\textit{clone}) \pause
			\item Realizar I/O (\textit{open}, \textit{read}, \textit{write} y \textit{clunk})\pause
			\item Cambiar atributos \pause
			\item Crear y borrar archivos (\textit{remove}) \pause
			\end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Protocolo 9P}
	\framesubtitle{Llamadas}
	\begin{itemize}
			\item Funciona de dos maneras: \pause
			\begin{itemize}
			\item Mensajes RPC a través de la red \pause
			\item Interfaz de procedimientos dentro del kernel.\pause
				% channels
			\end{itemize}
	\end{itemize}
\end{frame}
